package main

import "fmt"

//28.猴子吃桃子
//猴子第一天摘了若干个桃子，当即吃了一半，还不解馋，又多吃了一个；
//第二天，吃剩下的桃子的一半，还不过瘾，又多吃了一个；
//以后每天都吃前一天剩下的一半多一个，
//到第10天想再吃时，只剩下一个桃子了。
//问第一天共摘了多少个桃子？

// 吃桃的递归函数hou(t)几天前与剩余桃子个数数量关系
// 还原出初始数量
// 第10天，也就是当天 hou(0)=1
// 第9天，也就是1天前 hou(1)=2*(hou(0)+1)
// 第8天，也就是2天前 hou(2)=2*(hou(1)+1)
// ****
// 第3天，也就是7天前 hou(7)=2*(hou(6)+1)
// 第2天，也就是8天前 hou(8)=2*(hou(7)+1)
// 第1天，也就是9天前 hou(9)=2*(hou(8)+1)
// 初始，也就是10天前 hou(10)=2*(hou(9)+1)
func hou(n int) int {
	// 第10天，也就是当天 剩余1
	if n == 1 {
		return 1
	} else {
		//10天前
		return 2*hou(n-1) + 2
	}
}

func main() {
	//10天前，也就是第1天
	fmt.Printf("第一天共摘了%d个桃子！", hou(10))

}
